var vueObj = null;
var ip = window.location.host;
if (ip.indexOf("http://") === -1) {
    ip = "http://" + ip
}

/**
 * 基础axios请求调用
 * @param {*} method 请求方式：GET / POST, 忽略大小写
 * @param {*} url 请求地址
 * @param {*} params 请求参数
 * @param {*} successCallback 成功回调函数
 * @param {*} errorCallback 异常回调函数
 * @param {*} extend 属性扩展
 */
function axiosDoAjax(method, url, params, successCallback, errorCallback, extend) {
    method = method.toUpperCase();
    var requestParams = {
        method: method,
        url: url,
        headers: { 'Content-Type': 'application/json' }
    }
    if (method === 'GET') {
        requestParams["params"] = params;
    } else if (method === 'POST') {
        requestParams["data"] = params;
    }

    if (extend) {
        var keys = Object.keys(extend);
        for (var i = 0; i < keys.length; i++) {
            requestParams[keys[i]] = extend[keys[i]];
        }
    }

    axios(requestParams).then(response => {
        successCallback(response.data);
        if (response.data.code === 1 && vueObj) {
            vueObj.showMsg(response.data.msg, 'warning');
        }
    }, error => {
        if (errorCallback) {
            errorCallback(error);
        }
        if (vueObj) {
            try{
                var errorMsg = JSON.parse(error.request.response);
                vueObj.showMsg('ERROR -> ' + errorMsg.msg, 'error');
            } catch (e) {
                vueObj.showMsg('ERROR -> 未知系统异常! ', 'error');
            }
        }
    });
}

/**
 * 初始化vue对象的消息提示函数
 * 参数msg：消息正文
 * 参数msgType：消息类型 -> success / warning / error, 默认 success
 * @param {*} vueObj vue对象
 */
function initShowMsg(vueObj) {
    vueObj.showMsg = function (msg, msgType) {
        vueObj.$message({
            showClose: true,
            message: msg ? msg : "success",
            type: msgType ? msgType : "success",
            center: true,
            offset: window.screen.height / 3
        });
    }
}

/**
 * 写入粘贴板
 * @param {*} content 内容
 */
function writePaste(content) {
    if (navigator.clipboard && window.isSecureContext) {
        // navigator clipboard 向剪贴板写文本
        navigator.clipboard.writeText(content);
    } else {
        // 创建text area
        let textArea = document.createElement("textarea");
        textArea.value = content;
        // 使text area不在viewport，同时设置不可见
        textArea.style.position = "absolute";
        textArea.style.opacity = 0;
        textArea.style.left = "-999999px";
        textArea.style.top = "-999999px";
        document.body.appendChild(textArea);
        textArea.focus();
        textArea.select();

        new Promise((res, rej) => {
            // 执行复制命令并移除文本框
            document.execCommand('copy') ? res() : rej();
            textArea.remove();
        });
    }
}